home *** CD-ROM | disk | FTP | other *** search
Wrap
xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) NNNNAAAAMMMMEEEE xlv_mgr - administers XLV logical volume objects and their disk labels SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS xxxxllllvvvv____mmmmggggrrrr [ ----rrrr root ] [ ----cccc cmdstring ] [ ----vvvv ] [ ----xxxx ] [ ----RRRR ] DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN _x_l_v__m_g_r displays and modifies existing XLV objects (volumes, plexes, volume elements, and XLV disk labels). _x_l_v__m_g_r can operate on XLV volumes even while they are mounted and in use. _x_l_v__m_g_r supports the following command line options: ----rrrr _r_o_o_t Use _r_o_o_t as the root directory. This is used in the miniroot when / is mounted as /_r_o_o_t. ----cccc _c_m_d_s_t_r_i_n_g Command line option. Causes _x_l_v__m_g_r to go into command line mode and use _c_m_d_s_t_r_i_n_g as the command input. Multiple instances of ----cccc are accumulated. ----vvvv Verbose option. Causes _x_l_v__m_g_r to generate more detailed output. ----xxxx Expert mode. Provides additional functions. ----RRRR Do not read the XLV configuration information from the disks at the time _x_l_v__m_g_r is invoked. This allows _x_l_v__m_g_r to quickly startup. The XLV configuration information can be read from the disks at a later time with the rrrreeeesssseeeetttt command. Commands that pertain to plexes are displayed only when the system has been licensed for the plexing portion of XLV. _x_l_v__m_g_r provides several types of operations: aaaattttttttaaaacccchhhh, ddddeeeettttaaaacccchhhh, ddddeeeelllleeeetttteeee, cccchhhhaaaannnnggggeeee, ssssccccrrrriiiipppptttt, and sssshhhhoooowwww: aaaattttttttaaaacccchhhh Add an XLV object to another XLV object. You can add a volume element to a plex or plex to a volume. The volume element or plex to be added must first be created using _x_l_v__m_a_k_e(1M). ddddeeeettttaaaacccchhhh Separate a part of an XLV object and make it an independent (standalone) XLV object. For example, if you detach a plex from a plexed volume, that plex is separated from the volume and made into a standalone plex. The original volume then has one less plex. ddddeeeelllleeeetttteeee Delete an entire XLV object. ssssccccrrrriiiipppptttt Generate the _x_l_v__m_a_k_e commands required to create some or all XLV objects. PPPPaaaaggggeeee 1111 xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) sssshhhhoooowwww Display the list of XLV objects on the system and their structure. cccchhhhaaaannnnggggeeee Change an attribute associated with can XLV object. The commands are: sssshhhhoooowwww [----lllloooonnnngggg][----vvvveeeerrrrbbbboooosssseeee] aaaallllllll Displays all known XLV objects by name and type. The ----lllloooonnnngggg option causes more information about each XLV object to be displayed. The ----vvvveeeerrrrbbbboooosssseeee displays more detailed information, such as the uuid. The following is an example of the output of this command: xlv_mgr> _ssss_hhhh_oooo_wwww _aaaa_llll_llll Volume: root_vol (complete) Volume: db1 (complete) Volume Element: ve12 Plex: plex2 sssshhhhoooowwww [----sssshhhhoooorrrrtttt][----vvvveeeerrrrbbbboooosssseeee] kkkkeeeerrrrnnnneeeellll [_v_o_l_u_m_e__n_a_m_e] Displays all XLV objects or the specified _v_o_l_u_m_e__n_a_m_e configured into the running kernel. The only XLV objects in the kernel are volumes. Standalone plexes and volume elements are not viable objects in the kernel because they cannot be used. The ----sssshhhhoooorrrrtttt option displays terse information on each volume. The ----vvvveeeerrrrbbbboooosssseeee displays more detailed information on each volume. sssshhhhoooowwww [----lllloooonnnngggg][----vvvveeeerrrrbbbboooosssseeee] llllaaaabbbbeeeellllssss [_d_e_v_i_c_e__v_o_l_u_m_e__h_e_a_d_e_r] Displays XLV disk labels on all disks or the specified _d_e_v_i_c_e__v_o_l_u_m_e__h_e_a_d_e_r. The ----lllloooonnnngggg option displays the secondary label. sssshhhhoooowwww ccccoooonnnnffffiiiigggg Displays XLV software configuration information about the running kernel. Included are statistics on the XLV memory pools for all plexed volumes (if support is present) and all volume elements. For example: xlv_mgr> _ssss_hhhh_oooo_wwww _cccc_oooo_nnnn_ffff_iiii_gggg Allocated subvol locks: 30 locks in use: 8 Plexing license: present Plexing support: present Statistic Collection: off Plex buffer pool statistics: maximum concurrent I/O's 13; I/O buffer size 1016 bytes buffer pool size 13.21KB; maximum size 4.00GB pool hits 1121; misses 141; waits 0; resized 4 times memory growth rate 50%; maximum miss rate 10% Volume Element buffer pool statistics: PPPPaaaaggggeeee 2222 xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) maximum concurrent I/O's 53; I/O buffer size 1.48KB buffer pool size 80.32KB; maximum size 4.00GB pool hits 1636; misses 225; waits 0; resized 5 times memory growth rate 50%; maximum miss rate 10% Maximum subvol block number: 0x7fffffff The SSSSttttaaaattttiiiissssttttiiiicccc CCCCoooolllllllleeeeccccttttiiiioooonnnn tag indicates if statistics gathering is enabled (oooonnnn) or disabled (ooooffffffff). In the pool statistics, hhhhiiiittttssss imply an efficient I/O path and mmmmiiiisssssssseeeessss suggest a somewhat slower path. When the mmmmaaaaxxxxiiiimmmmuuuummmm mmmmiiiissssssss rrrraaaatttteeee is exceeded, the buffer pool is grown by the ggggrrrroooowwwwtttthhhh rrrraaaatttteeee. The buffer pool size is limited to mmmmaaaaxxxxiiiimmmmuuuummmm ssssiiiizzzzeeee. The mmmmaaaaxxxxiiiimmmmuuuummmm ccccoooonnnnccccuuuurrrrrrrreeeennnntttt IIII////OOOO''''ssss gives an upper bound on the number of efficient I/Os possible, and the IIII////OOOO bbbbuuuuffffffffeeeerrrr ssssiiiizzzzeeee is the amount of memory dedicated for each I/O request. sssshhhhoooowwww [----vvvveeeerrrrbbbboooosssseeee] oooobbbbjjjjeeeecccctttt _o_b_j_e_c_t__n_a_m_e Displays detailed information on an XLV object _o_b_j_e_c_t__n_a_m_e. The information includes all the XLV parameters and the disk partitions that make up the object. In the example below, the volume named _d_b_1 has one subvolume of type ddddaaaattttaaaa that contains two plexes. The first plex has two volume elements, while the second plex only has one volume element. The first volume element in each plex covers the same range of disk blocks. For each volume element, _x_l_v__m_g_r displays the partitions that make up the volume element, the size of the partition, and the range of this volume's disk blocks that map to the volume element. For example: xlv_mgr> _ssss_hhhh_oooo_wwww _oooo_bbbb_jjjj_eeee_cccc_tttt _dddd_bbbb_1111 VOL db1 (complete) VE db1.data.0.0 [active] start=0, end=1100799, (cat)grp_size=1 /dev/dsk/dks1d4s0 (1100800 blks) VE db1.data.0.1 [active] start=1100800, end=2201599, (cat)grp_size=1 /dev/dsk/dks1d4s1 (1100800 blks) VE db1.data.1.0 [active] start=0, end=1100799, (cat)grp_size=1 /dev/dsk/dks1d4s2 (1100800 blks) sssshhhhoooowwww ssssttttaaaatttt [_s_u_b_v_o_l_u_m_e] Displays statistics gathered for either all subvolumes or the specified subvolume. For example: xlv_mgr> _ssss_hhhh_oooo_wwww _ssss_tttt_aaaa_tttt _rrrr_oooo_oooo_tttt_...._dddd_aaaa_tttt_aaaa Subvolume 0 (root.data): read ops: 668, read blocks: 286015 write ops: 2025, write blocks: 305508 PPPPaaaaggggeeee 3333 xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) The above example shows the number of read/write operations and read/write blocks going to the _dddd_aaaa_tttt_aaaa subvolume of the volume _r_o_o_t. The following example shows the statistics for subvolume 6 which has a striped volume element. xlv_mgr> _ssss_hhhh_oooo_wwww _ssss_tttt_aaaa_tttt _6666 Subvolume 6 (rickey.data): read ops: 300, read blocks: 2457600 write ops: 300, write blocks: 2457600 stripe ops: 600, total units: 19200 largest single i/o: 32 stripe units, frequency: 600 aligned < stripe width; ends on stripe unit: 0 aligned > stripe width; ends on stripe unit: 600 aligned = stripe width; ends on stripe unit: 0 aligned > or < stripe width; doesn't end on stripe unit: 0 unaligned < stripe width; ends on stripe unit: 0 unaligned > stripe width; ends on stripe unit: 0 unaligned = stripe width; doesn't end on stripe unit: 0 unaligned > or < stripe width; doesn't end on stripe unit: 0 A stripe width is composed of the product of the stripe unit and the number of disks comprising the stripe. The stripe unit determines the number of blocks to write to one disk before writing to the next. The stripe statistics are: ssssttttrrrriiiippppeeee ooooppppssss The number of operations issued to the subvolume's striped volume elements. Depending on the volume geometry, and whether or not the subvolume is plexed, this may not match the number of read and write operations. ttttoooottttaaaallll uuuunnnniiiittttssss The cumulative count of all stripe units involved in stripe operations to the subvolume. llllaaaarrrrggggeeeesssstttt ssssiiiinnnngggglllleeee iiii////oooo Keeps track of the largest I/O size issued to the subvolume measured in stripe units. ffffrrrreeeeqqqquuuueeeennnnccccyyyy The number of times the largest I/O was issued. There are three parameters for evaluating how an I/O spans a striped volume: aaaalllliiiiggggnnnneeeedddd////uuuunnnnaaaalllliiiiggggnnnneeeedddd Indicates whether or not the start address of the I/O begins on a stripe unit boundary. If an I/O doesn't start on a boundary, the stripe unit is used inefficiently. PPPPaaaaggggeeee 4444 xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) <<<< ssssttttrrrriiiippppeeee wwwwiiiiddddtttthhhh >>>> ssssttttrrrriiiippppeeee wwwwiiiiddddtttthhhh ==== ssssttttrrrriiiippppeeee wwwwiiiiddddtttthhhh Specifies if the transfer is less than a stripe width's worth of data, more than a stripe width, or an even multiple of the stripe width size. Transfers of full stripe widths are optimal since all disks are accessed evenly. Transfers of more or less than a stripe width are less optimal due to uneven drive access patterns. ddddooooeeeessssnnnn''''tttt eeeennnndddd oooonnnn aaaa ssssttttrrrriiiippppeeee uuuunnnniiiitttt eeeennnnddddssss oooonnnn aaaa ssssttttrrrriiiippppeeee uuuunnnniiiitttt When an I/O ends on a stripe unit, the next sequential I/O will start aligned on a stripe unit boundary. If it doesn't end on a stripe unit, then the stripe is used inefficiently since a sequential access will require that particular unit to be accessed multiple times. aaaattttttttaaaacccchhhh vvvveeee _s_o_u_r_c_e _d_e_s_t-_p_l_e_x aaaattttttttaaaacccchhhh vvvveeee _s_o_u_r_c_e _v_o_l_u_m_e....{ddddaaaattttaaaa|lllloooogggg|rrrrtttt}...._N The command appends standalone volume element object _s_o_u_r_c_e to the end of destination plex. This enables you to grow a plex or volume by adding a volume element to the end of a plex. You can use this in conjunction with _x_f_s__g_r_o_w_f_s(1M) to grow an XFS filesystem without unmounting it. Suppose that you have a volume element, _s_p_a_r_e_v_e, that contains a single disk partition /_d_e_v/_d_s_k/_d_k_s_1_d_4_s_2. The following command appends it to plex 0 of the data subvolume of volume _d_b_1: xlv_mgr> _aaaa_tttt_tttt_aaaa_cccc_hhhh _vvvv_eeee _ssss_pppp_aaaa_rrrr_eeee_vvvv_eeee _dddd_bbbb_1111_...._dddd_aaaa_tttt_aaaa_...._0000 xlv_mgr> _ssss_hhhh_oooo_wwww _oooo_bbbb_jjjj_eeee_cccc_tttt _dddd_bbbb_1111 VOL db1 (complete) VE db1.data.0.0 [active] start=0, end=1100799, (cat)grp_size=1 /dev/dsk/dks1d4s0 (1100800 blks) VE db1.data.0.1 [active] start=1100800, end=2201599, (cat)grp_size=1 /dev/dsk/dks1d4s1 (1100800 blks) VE db1.data.0.2 [active] start=2201600, end=3302399, (cat)grp_size=1 /dev/dsk/dks1d4s2 (1100800 blks) aaaattttttttaaaacccchhhh pppplllleeeexxxx _s_o_u_r_c_e _v_o_l_u_m_e....{ddddaaaattttaaaa|lllloooogggg|rrrrtttt} Appends standalone plex object _s_o_u_r_c_e to existing volume _v_o_l_u_m_e. This command creates duplicate copies of the data on the volume for greater reliability. This operation is sometimes called _m_i_r_r_o_r_i_n_g. After the plex has been added, _x_l_v__m_g_r automatically initiates a plex revive operation; this copies the data from the original XLV plexes to the newly added plex so that the plex holds the same data as the original plexes in the volume. The following appends a plex PPPPaaaaggggeeee 5555 xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) named _p_l_e_x_2 to the data subvolume of volume _d_b_1: xlv_mgr> _aaaa_tttt_tttt_aaaa_cccc_hhhh _pppp_llll_eeee_xxxx _pppp_llll_eeee_xxxx_2222 _dddd_bbbb_1111_...._dddd_aaaa_tttt_aaaa Use the sssshhhhoooowwww oooobbbbjjjjeeeecccctttt command to display volume _d_b_1 and see that the disk partitions that were part of _p_l_e_x_2 are now a component of _d_b_2. _p_l_e_x_2 no longer exists as a standalone plex since it was merged into volume _d_b_1. iiiinnnnsssseeeerrrrtttt vvvveeee _s_o_u_r_c_e _v_o_l....{ddddaaaattttaaaa|lllloooogggg|rrrrtttt}...._N iiiinnnnsssseeeerrrrtttt vvvveeee _s_o_u_r_c_e _p_l_e_x...._N Inserts standalone volume element object _s_o_u_r_c_e into the destination plex object. This enables you to add a volume element into a gap in a plex. _x_l_v__m_g_r requires that the destination be a fully qualified XLV pathname (for example, movies.data.0). The pathname must specify the relative position within the plex to insert the volume element. (The first volume element in a plex is at position 0.) The plex to be operated on can be a standalone plex or a part of a volume. If the plex is part of a volume, the volume, subvolume, and plex must be specified. In the example below it is volume _t_e_s_t. The following example inserts a volume element _v_e_5 into a gap in the volume _t_e_s_t. There is a gap because the first volume element starts at block number 76200. First display the configuration of _t_e_s_t and _v_e_5 before inserting _v_e_5 into _t_e_s_t. xlv_mgr> _ssss_hhhh_oooo_wwww _oooo_bbbb_jjjj_eeee_cccc_tttt _tttt_eeee_ssss_tttt VOL test (has holes) VE test.data.0.0 [active] start=76200, end=152399, (cat)grp_size=1 /dev/dsk/dks0d2s1 (76200 blks) VE test.data.0.1 [active] start=152400, end=228599, (cat)grp_size=1 /dev/dsk/dks0d2s2 (76200 blks) xlv_mgr> _ssss_hhhh_oooo_wwww _oooo_bbbb_jjjj_eeee_cccc_tttt _vvvv_eeee_5555 VE ve5 [empty] start=0, end=76199, (cat)grp_size=1 /dev/dsk/dks0d2s5 (76200 blks) xlv_mgr> _iiii_nnnn_ssss_eeee_rrrr_tttt _vvvv_eeee _vvvv_eeee_5555 _tttt_eeee_ssss_tttt_...._dddd_aaaa_tttt_aaaa_...._0000 xlv_mgr> _ssss_hhhh_oooo_wwww _oooo_bbbb_jjjj_eeee_cccc_tttt _tttt_eeee_ssss_tttt VOL test (complete) VE test.data.0.0 [stale] start=0, end=76199, (cat)grp_size=1 /dev/dsk/dks0d2s5 (76200 blks) VE test.data.0.1 [active] PPPPaaaaggggeeee 6666 xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) start=76200, end=152399, (cat)grp_size=1 /dev/dsk/dks0d2s1 (76200 blks) VE test.data.0.2 [active] start=152400, end=228599, (cat)grp_size=1 /dev/dsk/dks0d2s2 (76200 blks) ddddeeeettttaaaacccchhhh [----ffffoooorrrrcccceeee] vvvveeee _p_l_e_x...._N _v_e-_o_b_j_e_c_t ddddeeeettttaaaacccchhhh [----ffffoooorrrrcccceeee] vvvveeee _v_o_l_u_m_e....{ddddaaaattttaaaa|lllloooogggg|rrrrtttt}...._N _v_e-_o_b_j_e_c_t Removes specified volume element from its parent object and save it as _v_e-_o_b_j_e_c_t. This command separates a volume element from its parent plex. This volume element can later be added to some other XLV object. The plex from which the volume element is removed can be a standalone plex or part of a volume. The detached volume element becomes a standalone XLV volume element object. You must specify the fully qualified pathname of the volume element to be detached and the name to be given to the detached volume element. The ----ffffoooorrrrcccceeee option forces the detach when the the parent object is missing any pieces. The detach operation leaves the volume element intact. ddddeeeettttaaaacccchhhh [----ffffoooorrrrcccceeee] pppplllleeeexxxx _v_o_l_n_a_m_e....{ddddaaaattttaaaa|lllloooogggg|rrrrtttt}...._p_l_e_x_n_o _p_l_e_x_o_b_j_e_c_t This command removes the specified plex from its parent object and saves it as _p_l_e_x_o_b_j_e_c_t. The ----ffffoooorrrrcccceeee option forces the detach when the the parent object is missing any pieces. This new standalone plex can later be added back to a volume via the aaaattttttttaaaacccchhhh pppplllleeeexxxx command. The following example shows how to detach the first plex from a volume: xlv_mgr> _dddd_eeee_tttt_aaaa_cccc_hhhh _pppp_llll_eeee_xxxx _dddd_bbbb_1111_...._dddd_aaaa_tttt_aaaa_...._0000 _ssss_aaaa_vvvv_eeee_dddd_pppp_llll_eeee_xxxx ddddeeeelllleeeetttteeee oooobbbbjjjjeeeecccctttt _n_a_m_e Deletes the object _n_a_m_e. This command enables you to delete a volume, a standalone plex, or a standalone volume element. The XLV configuration is removed from the disks that make up the XLV object. Because the XLV configuration information is stored in the volume header (see _v_h(7M)), this command does not affect any user data that may have been written to the user disk partitions. ddddeeeelllleeeetttteeee aaaallllllll[____llllaaaabbbbeeeellllssss] An expert command, this command deletes the XLV labels from all disks on the local system. You might want to do this to initialize all the disks on a new system and ensure that there is no leftover XLV configuration information on the disks. Note that this is a very dangerous operation. Deleting the disk labels destroys all of the XLV objects on the system. ddddeeeelllleeeetttteeee llllaaaabbbbeeeellll _d_e_v_i_c_e__v_o_l_u_m_e__h_e_a_d_e_r An expert command, this command deletes the XLV disk label from the named _d_e_v_i_c_e__v_o_l_u_m_e__h_e_a_d_e_r. PPPPaaaaggggeeee 7777 xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) cccchhhhaaaannnnggggeeee nnnnaaaammmmeeee _o_b_j_e_c_t__n_a_m_e _n_e_w_n_a_m_e This command renames the given XLV object _o_b_j_e_c_t__n_a_m_e to _n_e_w_n_a_m_e. The following example shows how to rename an object _s_m_a_l_l to _b_i_g. xlv_mgr> _cccc_hhhh_aaaa_nnnn_gggg_eeee _nnnn_aaaa_mmmm_eeee _ssss_mmmm_aaaa_llll_llll _bbbb_iiii_gggg cccchhhhaaaannnnggggeeee nnnnooooddddeeeennnnaaaammmmeeee _n_a_m_e _o_b_j_e_c_t ... This command changes the nodename associated with the named objects. The following example shows how to set the node name for the volume _d_b_1 to _h_o_m_e_s_t_e_a_d. xlv_mgr> _cccc_hhhh_aaaa_nnnn_gggg_eeee _nnnn_oooo_dddd_eeee_nnnn_aaaa_mmmm_eeee _hhhh_oooo_mmmm_eeee_ssss_tttt_eeee_aaaa_dddd _dddd_bbbb_1111 cccchhhhaaaannnnggggeeee oooonnnnlllliiiinnnneeee _v_o_l....{ddddaaaattttaaaa|lllloooogggg|rrrrtttt}...._N...._N cccchhhhaaaannnnggggeeee oooofffffffflllliiiinnnneeee _v_o_l....{ddddaaaattttaaaa|lllloooogggg|rrrrtttt}...._N...._N This command transitions the specified volume element online or offline. cccchhhhaaaannnnggggeeee ssssttttaaaatttt oooonnnn cccchhhhaaaannnnggggeeee ssssttttaaaatttt ooooffffffff Expert commands to enable or disable statistics gathering. The default setting for statistics gathering is specified in the configuration file /_v_a_r/_s_y_s_g_e_n/_m_a_s_t_e_r._d/_x_l_v. cccchhhhaaaannnnggggeeee ttttyyyyppppeeee vvvveeee|pppplllleeeexxxx|vvvvoooollll _o_b_j_e_c_t This command changes the type of the given object. The following example shows how to change a standalone plex object _s_a__p_l_e_x to a volume and then rename the volume to _b_a_c_k_u_p__v_o_l. xlv_mgr> _cccc_hhhh_aaaa_nnnn_gggg_eeee _tttt_yyyy_pppp_eeee _vvvv_oooo_llll _ssss_aaaa______pppp_llll_eeee_xxxx xlv_mgr> _cccc_hhhh_aaaa_nnnn_gggg_eeee _nnnn_aaaa_mmmm_eeee _ssss_aaaa______pppp_llll_eeee_xxxx _bbbb_aaaa_cccc_kkkk_uuuu_pppp______vvvv_oooo_llll cccchhhhaaaannnnggggeeee vvvveeee____ssssttttaaaarrrrtttt _s_t_a_r_t__b_l_o_c_k _s_a__v_e This command changes the start address of a standalone volume element. This is useful to aid in detaching a volume element from one object and arbitrarily inserting it in another. cccchhhhaaaannnnggggeeee pppplllleeeexxxxmmmmeeeemmmm _m_a_x-_p_o_o_l-_i/_o_s _g_r_o_w_t_h% _m_a_x_i_m_u_m-_m_i_s_s% [_m_a_x_i_m_u_m-_s_i_z_e] cccchhhhaaaannnnggggeeee vvvveeeemmmmeeeemmmm _m_a_x-_p_o_o_l-_i/_o_s _g_r_o_w_t_h% _m_a_x_i_m_u_m-_m_i_s_s% [_m_a_x_i_m_u_m-_s_i_z_e] An expert command, these two commands allow you to modify the parameters for the two XLV memory/buffer pools. When servicing an I/O request, there are two types of memory allocated. The first is for plexed volumes, if plexing support is present, and the second is for the underlying volume elements. If no memory available in the respective memory pool, XLV gets memory from the system general purpose memory allocator. By changing the maximum number of concurrent I/O _m_a_x-_p_o_o_l-_i/_o_s, you can increase the efficiency of an I/O request because memory taken from the pool is PPPPaaaaggggeeee 8888 xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) more efficient than using the general purpose allocator. Changing the growth percentage _g_r_o_w_t_h% alters how fast the pool grows when the number of misses exceeds the miss percentage _m_a_x_i_m_u_m-_m_i_s_s%. The _m_a_x_i_m_u_m-_s_i_z_e parameter is expressed in kilobyte units and is used to limit the size of the memory pool. Note that any changes to the pool parameters are only for life of the running system. The changes are not kept across system restarts. rrrreeeesssseeeetttt Reinitializes _x_l_v__m_g_r data structures by rereading all the XLV configuration information from all the disks. rrrreeeesssseeeetttt ssssttttaaaatttt [_s_u_b_v_o_l_u_m_e] An expert command to clear the statistics of either all subvolumes or the named subvolume. ssssccccrrrriiiipppptttt [----wwwwrrrriiiitttteeee _f_i_l_e_n_a_m_e] oooobbbbjjjjeeeecccctttt _n_a_m_e ssssccccrrrriiiipppptttt [----wwwwrrrriiiitttteeee _f_i_l_e_n_a_m_e] aaaallllllll Generates the required _x_l_v__m_a_k_e commands to create the named object or all objects. When the ----wwwwrrrriiiitttteeee option is specified, the _x_l_v__m_a_k_e commands are saved into _f_i_l_e_n_a_m_e. hhhheeeellllpppp Displays a summary of _x_l_v__m_g_r commands. ???? Same as hhhheeeellllpppp. sssshhhh Fork a shell. qqqquuuuiiiitttt Terminate this session. EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS These examples show the making of some XLV objects and the growing and plexing of a volume. The resulting volume configuration is saved to a _x_l_v__m_a_k_e(1M) input file. Use _x_l_v__m_a_k_e(1M) to create a volume named _b_i_g_v_o_l_u_m_e. xlv_make> _vvvv_oooo_llll _bbbb_iiii_gggg_vvvv_oooo_llll_uuuu_mmmm_eeee bigvolume xlv_make> _dddd_aaaa_tttt_aaaa bigvolume.data xlv_make> _pppp_llll_eeee_xxxx bigvolume.data.0 xlv_make> _vvvv_eeee _dddd_kkkk_ssss_1111_3333_1111_dddd_3333_ssss_7777 bigvolume.data.0.0 xlv_make> _eeee_nnnn_dddd Object specification completed xlv_make> _eeee_xxxx_iiii_tttt Newly created objects will be written to disk. Is this what you want?(yes) _yyyy_eeee_ssss PPPPaaaaggggeeee 9999 xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) Invoking xlv_assemble Create a standalone volume element _s_p_a_r_e__v_e. # _xxxx_llll_vvvv______mmmm_aaaa_kkkk_eeee xlv_make> _vvvv_eeee _ssss_pppp_aaaa_rrrr_eeee______vvvv_eeee _dddd_kkkk_ssss_1111_3333_1111_dddd_4444_ssss_7777 spare_ve xlv_make> _eeee_nnnn_dddd Object specification completed xlv_make> _eeee_xxxx_iiii_tttt Newly created objects will be written to disk. Is this what you want?(yes) _yyyy_eeee_ssss Invoking xlv_assemble Use the _x_l_v__m_g_r _aaaa_tttt_tttt_aaaa_cccc_hhhh _vvvv_eeee command to grow the volume _b_i_g_v_o_l_u_m_e by appending _s_p_a_r_e__v_e to plex 0 of the data subvolume. # _xxxx_llll_vvvv______mmmm_gggg_rrrr xlv_mgr> _aaaa_tttt_tttt_aaaa_cccc_hhhh _vvvv_eeee _ssss_pppp_aaaa_rrrr_eeee______vvvv_eeee _bbbb_iiii_gggg_vvvv_oooo_llll_uuuu_mmmm_eeee_...._dddd_aaaa_tttt_aaaa_...._0000 xlv_mgr> _eeee_xxxx_iiii_tttt Create a standalone plex _s_p_a_r_e__p_l_e_x which can be used to completely mirror the volume _b_i_g_v_o_l_u_m_e. xlv_make> _pppp_llll_eeee_xxxx _ssss_pppp_aaaa_rrrr_eeee______pppp_llll_eeee_xxxx spare_plex xlv_make> _vvvv_eeee _dddd_kkkk_ssss_1111_3333_3333_dddd_3333_ssss_7777 spare_plex.0 xlv_make> _vvvv_eeee _dddd_kkkk_ssss_1111_3333_3333_dddd_4444_ssss_7777 spare_plex.1 xlv_make> _eeee_nnnn_dddd Object specification completed xlv_make> _eeee_xxxx_iiii_tttt Newly created objects will be written to disk. Is this what you want?(yes) _yyyy_eeee_ssss Invoking xlv_assemble Use the _x_l_v__m_g_r _aaaa_tttt_tttt_aaaa_cccc_hhhh _pppp_llll_eeee_xxxx command to mirror the volume _b_i_g_v_o_l_u_m_e by adding plex _s_p_a_r_e__p_l_e_x to the data subvolume. # _xxxx_llll_vvvv______mmmm_gggg_rrrr xlv_mgr> _aaaa_tttt_tttt_aaaa_cccc_hhhh _pppp_llll_eeee_xxxx _ssss_pppp_aaaa_rrrr_eeee______pppp_llll_eeee_xxxx _bbbb_iiii_gggg_vvvv_oooo_llll_uuuu_mmmm_eeee_...._dddd_aaaa_tttt_aaaa xlv_mgr> _eeee_xxxx_iiii_tttt Save the volume configuration to a file. # _xxxx_llll_vvvv______mmmm_gggg_rrrr xlv_mgr> _ssss_cccc_rrrr_iiii_pppp_tttt _----_wwww_rrrr_iiii_tttt_eeee _////_eeee_tttt_cccc_////_xxxx_llll_vvvv______mmmm_aaaa_kkkk_eeee_...._bbbb_iiii_gggg_vvvv_oooo_llll_uuuu_mmmm_eeee_...._iiii_nnnn_pppp_uuuu_tttt _oooo_bbbb_jjjj_eeee_cccc_tttt _bbbb_iiii_gggg_vvvv_oooo_llll_uuuu_mmmm_eeee xlv_mgr> _eeee_xxxx_iiii_tttt PPPPaaaaggggeeee 11110000 xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) xxxxllllvvvv____mmmmggggrrrr((((1111MMMM)))) SSSSEEEEEEEE AAAALLLLSSSSOOOO xlv_assemble(1M), xlv_make(1M), xlv_plexd(1M), xlv_shutdown(1M), xlv(7M). _T_c_l _a_n_d _t_h_e _T_k _T_o_o_l_k_i_t by John K. Ousterhout, Addison-Wesley, 1994. NNNNOOOOTTTTEEEESSSS _x_l_v__m_g_r operations modify both the XLV disk labels and the kernel data structures as appropriate. This means that you do not need to run _x_l_v__a_s_s_e_m_b_l_e(1M) for your changes to take effect. The only exceptions are the XLV label deleting commands ddddeeeelllleeeetttteeee aaaallllllll____llllaaaabbbbeeeellllssss and ddddeeeelllleeeetttteeee llllaaaabbbbeeeellll, which effect only the disk labels. _x_l_v__m_g_r automatically initiates plex revive operations (see _x_l_v__p_l_e_x_d(1M)) as required after adding a new plex to a volume or a volume element to a plexed volume. You should be root when running _x_l_v__m_g_r. Otherwise you have limited functionality. PPPPaaaaggggeeee 11111111